1. Field of the Invention
The invention relates generally to storage system performance and more specifically relates to methods and apparatus for improving initiator performance in communications between a Serial Attached SCSI Serial Advanced Technology Attachment Tunneling Protocol (SAS/STP) initiator device and a plurality of SATA target devices through a Serial Attached SCSI (SAS) expander.
2. Discussion of Related Art
In storage systems, a host system communicates with one or more storage devices. In SATA storage systems configured in a SAS domain, a SAS/STP initiator device (e.g., a host system) communicates with a SATA target device (e.g., a SATA storage device such as a disk drive). In native SATA configurations, a host system (a native SATA host controller) couples with a single SATA storage device to exchange data with the single SATA storage device. In SATA Native Command Queuing (NCQ) protocol, the SATA Device sends a DMA SETUP Frame Information Structure (FIS) to the SATA host to indicate that it is now ready to receive data from the host to the device. Although the SATA protocol provides a mechanism for the device to use multiple DMA SETUP FISs to complete a large I/O (for example 500 megabytes), in practice the SATA storage devices will choose to send a single DMA SETUP FIS for the entire I/O size (e.g., 500 megabytes as in the previous example). This capability is referred as Non-Zero Buffer Offset in the SATA specification. Since typical SATA disk drives do not provide sustained data transfer over such large volumes of data, this SATA standard technique results in large periods of stalling due to flow control signals/frames on the SATA interface.
In the typical desktop personal computer/workstation environment, this problem is largely a non-issue since the SATA interface is a point-to-point interface between the host and the single device. This stalling behavior does not affect any other devices.
However, when using SATA storage devices in a Serial Attached SCSI (SAS) topology using the SATA Tunneling Protocol (STP), these periods of stalling can be wasteful in that they consume other SAS resources (particularly SAS connection pathways that could be used for other connections but for the stalled connection with one SATA device that has stalled the large DMA transfer). However, the SAS Initiator or SATA host has no real knowledge of the SATA storage device's internal buffer state and therefore cannot intelligently determine how much data the drive can actually sustain. In a SAS topology coupling a plurality of SATA storage devices to a SAS controller (e.g., through a SAS expander), the overall system performance is degraded by this SATA feature.
Thus, it is an ongoing challenge to improve performance of a SATA storage system as regard utilization of a SAS initiator acting as a SATA host coupled with multiple SATA storage devices.